import request from '@/utils/request'

const api = "/admin/cou"        // 优惠券接口


export interface CouponFormDTO {
    id?: string,
    name: string,   // 优惠券名称
    discountType: number,   // 优惠券类型 1 满减 2 折扣 3 每满减  4 无门槛
    thresholdAmount: number,    // 优惠券门槛金额 0代表无门槛
    discountValue: number,  // 优惠券面值 满减填优惠金额 折扣填折扣比例
    maxDiscountAmount: number,  // 优惠券最大优惠金额
    obtainWay: number,  // 领取方式 1 手动领取 2 兑换码
    totalNum: number,  // 优惠券总发放数数
    userLimit: number   // 每个用户限领张数
    specific: false,    // 是否指定限用范围 不限定范围
    scopes: [], // 限用范围 不限范围
}

export interface CouponDetailResponseType {
    id: string,     // 优惠券id
    name: string,   // 优惠券名称
    discountType: number,   // 优惠券类型 1 每满减  2 折扣  3 无门槛  4 满减
    thresholdAmount: number,    // 优惠券门槛金额 0代表无门槛
    discountValue: number,  // 优惠券面值 满减填优惠金额 折扣填折扣比例
    maxDiscountAmount: number,  // 优惠券最大优惠金额
    obtainWay: number,  // 领取方式 1 手动领取 2 兑换码
    totalNum: number,  // 优惠券总发放数数
    userLimit: number   // 每个用户限领张数
    issueBeginTime: '', // 优惠券发放开始时间
    issueEndTime: '',     // 优惠券发放结束时间
    termDays: number,   // 优惠券有效期
    termBeginTime: '', // 优惠券有效期开始时间
    termEndTime: '',   // 优惠券有效期结束时间
    scopes: [],     // 使用范围 不限范围
}

export interface CouponQueryType {
    pageNo: number,     // 页码
    pageSize: number,   // 每页数量
    sortBy: string,     // 排序字段
    isAsc: boolean,     // 是否升序
    discountType: number,       // 优惠券类型   1 每满减  2 折扣  3 无门槛  4 满减
    status: number,     // 优惠券状态 1 待发放    2 未开始   3 进行中     4 已结束      5 暂停
    name: string,       // 优惠券名称
}

export interface CouponListResponseType {
    id: string,     // 优惠券id
    name: string,   // 优惠券名称
    discountType: number,   // 优惠券类型 1 每满减  2 折扣  3 无门槛  4 满减
    thresholdAmount: number,    // 优惠券门槛金额 0代表无门槛
    discountValue: number,  // 优惠券面值 满减填优惠金额 折扣填折扣比例
    maxDiscountAmount: number,  // 优惠券最大优惠金额
    obtainWay: number,  // 领取方式 1 手动领取 2 兑换码
    totalNum: number,  // 优惠券总发放数数
    usedNum: number,    // 优惠券已使用数
    issueNumm: number,  // 优惠券已发放数
    userLimit: number   // 每个用户限领张数
    createTime: '',   // 优惠券创建时间
    issueBeginTime: '', // 优惠券发放开始时间
    issueEndTime: '',     // 优惠券发放结束时间
    termDays: number,   // 优惠券有效期
    termBeginTime: '', // 优惠券有效期开始时间
    termEndTime: '',   // 优惠券有效期结束时间
    status: number,     // 优惠券状态 1 待发放    2 未开始   3 进行中     4 已结束      5 暂停
}

export interface CouponIssueType {
    id: string,     // 优惠券id
    issueBeginTime: '',       // 优惠券发放开始时间
    issueEndTime: '',     // 优惠券发放结束时间
    termDays: number,   // 优惠券有效天数
    termBeginTime: '',     // 优惠券有效期开始时间
    termEndTime: '',  // 优惠券有效期结束时间
}

export default {
    /**
     * 新增优惠券
     * @param data 优惠券数据
     * @returns 没有返回值
     */
    addCoupon(data: CouponFormDTO){
        return request({
            url: `${api}/add`,
            method: 'post',
            data
        })
    },
    /**
     * 修改优惠券
     * @param data 优惠券数据
     * @returns 没有返回值
     */
    updateCoupon(data: CouponFormDTO){
        return request({
            url: `${api}/update/${data.id}`,
            method: 'post',
            data
        })
    },
    /**
     * 删除优惠券
     * @param id 优惠券id
     * @returns 没有返回值
     */
    deleteCoupon(id: string){
        return request({
            url: `${api}/delete/${id}`,
            method: 'delete'
        })
    },
    /**
     * 获取优惠券详情
     * @param id 优惠券id
     * @returns 优惠券详情 CouponDetailResponseType
     */
    getCouponDetail(id: string){
        return request({
            url: `${api}/${id}`,
            method: 'get'
        })
    },
    /**
     * 获取优惠券列表
     * @param data 分页条件
     * @returns 优惠券列表 CouponListResponseType
     */
    queryCouponByPage(data: CouponQueryType) {
        return request({
            url: `${api}/page`,
            method: 'post',
            data
        })
    },
    /**
     * 发放优惠券
     * @param data 发放优惠券参数
     * @returns 没有返回值
     */
    issueCoupon(data: CouponIssueType) {
        return request({
            url: `${api}/${data.id}/issue`,
            method: 'put',
            data
        })
    },
    
}